Skip to main content link. Accesskey S
  • Help
  • HCL Logo
  • HCL Notes and Domino Application Development wiki
  • THIS WIKI IS READ-ONLY. Individual names altered for privacy purposes.
  • HCL Forums and Blogs
  • Home
  • Product Documentation
  • Community Articles
  • Learning Center
  • API Documentation
Search
Community Articles > 日本語 - Japanese > XPages における JSF ライフサイクル - ページイベント処理のタイミング
  • Share Show Menu▼
  • Subscribe Show Menu▼

Recent articles by this author

XPages データソース解説 - URL パラメータ

XPages のデータソースとページをアクセスする際の URL パラメータとの関係について解説します。

XPages データソース解説 - スコープ

XPages のデータソースのスコープについて解説します。

XPages データソース解説 - 定義方法

XPages のデータソースの定義方法について解説します。

XPages データソース解説 - 種類

XPages のデータソースの種類について解説します。

XPages データソース解説 - 内部動作

XPages のデータソースの内部動作について解説します。
Community articleXPages における JSF ライフサイクル - ページイベント処理のタイミング
Added by ~Martha Brekroflar | Edited by ~Justin Elwemarynds on May 7, 2013 | Version 25
  • Actions Show Menu▼
expanded Abstract
collapsed Abstract
XPages 処理のバックグラウンドには JSF が動作しています。XPages から見た JSF のライフサイクルフェーズとイベント処理の順序やタイミングをまとめます。
Tags: XPages, JSF, イベント, ライフサイクル
ShowTable of Contents
HideTable of Contents
  • 1 JSF のライフサイクル
  • 2 XPages における JSF のライフサイクル
    • 2.1 Restore View フェーズ
    • 2.2 Apply Request Values フェーズ
    • 2.3 Process Validation フェーズ
    • 2.4 Update Model Values フェーズ
    • 2.5 Invoke Application フェーズ
    • 2.6 Render Response フェーズ
  • 3 XPageとカスタムコントロールのページイベント

JSF は Web アプリケーションのユーザーインターフェース構築を容易にするために開発されたJava EE 標準のフレームワークです。
XPages では、この JSF をバックグラウンドのフレームワークとして採用しています。

JSF のライフサイクル


JSF では、アプリケーションが HTTP リクエストを受け取ってからレスポンスを返すまでのライフサイクルを、
次の6つのフェーズに分けて定義しています。


  • Restore View フェーズ
    リクエストされたページの UI コンポーネントツリー構造を作成または復元します。
  • Apply Request Values フェーズ
    送信されてきた値を、対応する UI コンポーネントに適用します。
  • Process Validation フェーズ
    適用された値を、UI コンポーネントに対応付けられたバリデータにより検証します。
  • Update Model Values フェーズ
    検証された値により、UI コンポーネントに対応付けられたモデルを更新します。
  • Invoke Application フェーズ
    モデルが持つビジネスロジックを実行します。
  • Render Response フェーズ
    処理結果を、ブラウザにレンダリングできる形(HTML)に変換し、レスポンスします。

XPages における JSF のライフサイクル


これらのフェーズを XPages 開発者の視点から説明し直すと、次のようになります。

Restore View フェーズ


XPages の各ページは、ラベルや編集ボックスなど、さまざまなコントロールを階層的に組み合わせて定義されています。

実行時には、この構造を表現するコンポーネントツリーがページ情報を表すオブジェクトとして構築されます。

始めてページがアクセスされた際には、このコンポーネントツリーが新規に作成されます。
リクエストに対する処理がすべて終わった後、次のアクセスに備えてコンポーネントツリーがページキャッシュに保存されます。

その後、部分更新などにより同じページに対して処理が継続される際には、更新が発生するたびに
保存されてるコンポーネントツリーが呼び戻され、それに対して新たなリクエストの処理が適用されます。

Restore View フェーズでは、このコンポーネントツリーの新規作成や保存したツリーの呼び戻しを行います。

ページイベントとしては、beforePageLoad/afterPageLoad/afterRestoreView イベントがこのフェースの前後に実行されます。

Apply Request Values フェーズ


編集ボックスコントロールなど入力値を受け取るコントロールに対して、ブラウザからフォーム入力値として送信されてきた
値を引き渡します。

対応する各コントロールは未検証の値なので「仮」に受け取ります。

Process Validation フェーズ


XPages では、入力系コントロールには妥当性検査のプロパティを設定することが出来ます。
数値のみ、最大/最小長、一定のパターンに一致するなど、さまざまな条件を指定できます。

このフェーズでは、Apply Request Values フェーズで「仮」に受け取った値に対して、指定された妥当性検査を行います。
すべて検査にパスした場合には、次の Update Model Values に進みます。
エラーがあった場合には、Render Response フェーズにジャンプしてエラー表示を行います。

Update Model Values フェーズ


Process Validation フェーズで検証済みの入力値を「正式」に受け入れ、コントロールの値とします。

Invoke Application フェーズ


入力値の受け入れが終わったコントロールが持つ処理ロジックを実行します。具体的には、各コントロールの onClick などのイベントに
割り当てられた JavaScript などのアクションを実行します。

Render Response フェーズ


すべての処理が完了した後、最終的なコンポーネントツリーから、ブラウザにレスポンスとして返す HTML を生成します。

ページイベントとしては、beforeRenderResponse/afterRenderResponse イベントがこのフェースの前後に実行されます。


XPageとカスタムコントロールのページイベント


XPageやカスタムコントロールには、それぞれ次のページイベントが用意されています。
  • beforePageLoad
  • afterPageLoad
  • afterRestoreView
  • beforeRenderResponse
  • afterRenderResponse

これらがライフサイクルのどのタイミングでどういった順序で実行されるかをまとめます。
サンプルに利用するのは、以下のようなXPageです。2つのカスタムコントロールが配置されています。



これらのページイベントは、次の順序で実行されます。

  • 新規ページアクセスの場合

ベージイベントの実行順序1


  • 部分更新など、継続アクセスの場合

ページイベントの実行順序2

新規アクセスか継続アクセスかにより、PageLoad か RestoreView のいずれかのイベントが実行されています。
カスタムコントロールと組み合わされた際のそれぞれのイベントの実行順序にも注意してください。

この記事には続編があります。

XPages における JSF ライフサイクル - コントロールプロパティ評価のタイミング


  • Actions Show Menu▼


expanded Attachments (2)
collapsed Attachments (2)
Edit the article to add or modify attachments.
File TypeSizeFile NameCreated OnDelete file
image/x-png 6 KB list1.png 11/16/11, 1:26 AM
image/x-png 5 KB list2.png 11/16/11, 1:26 AM
expanded Versions (25)
collapsed Versions (25)
Version Comparison     
VersionDateChanged by              Summary of changes
This version (25)May 7, 2013, 1:11:19 AM~Justin Elwemarynds  
24Nov 16, 2011, 1:27:26 AM~Yoshi Froluchekettu  Minor Change
23Nov 10, 2011, 9:51:42 AM~Yoshi Froluchekettu  
22Nov 10, 2011, 9:50:57 AM~Yoshi Froluchekettu  
21Nov 10, 2011, 5:05:48 AM~Yoshi Froluchekettu  
19Nov 10, 2011, 4:55:23 AM~Yoshi Froluchekettu  
18Nov 10, 2011, 4:51:19 AM~Yoshi Froluchekettu  
17Nov 10, 2011, 4:48:25 AM~Yoshi Froluchekettu  
16Nov 10, 2011, 4:45:02 AM~Yoshi Froluchekettu  
15Nov 10, 2011, 4:40:34 AM~Yoshi Froluchekettu  
14Nov 10, 2011, 4:39:05 AM~Yoshi Froluchekettu  
13Nov 10, 2011, 4:38:41 AM~Yoshi Froluchekettu  
12Nov 10, 2011, 4:37:28 AM~Yoshi Froluchekettu  
11Nov 10, 2011, 4:28:30 AM~Yoshi Froluchekettu  
10Nov 10, 2011, 4:02:36 AM~Yoshi Froluchekettu  
9Nov 10, 2011, 3:57:23 AM~Yoshi Froluchekettu  
8Nov 10, 2011, 3:43:28 AM~Yoshi Froluchekettu  
7Nov 10, 2011, 3:25:32 AM~Yoshi Froluchekettu  
6Nov 10, 2011, 3:03:44 AM~Yoshi Froluchekettu  
5Nov 10, 2011, 3:01:44 AM~Yoshi Froluchekettu  
4Nov 10, 2011, 2:59:53 AM~Yoshi Froluchekettu  
3Nov 10, 2011, 2:59:43 AM~Yoshi Froluchekettu  
2Nov 10, 2011, 2:58:25 AM~Yoshi Froluchekettu  
1Nov 9, 2011, 3:58:10 AM~Yoshi Froluchekettu  
1Nov 9, 2011, 4:04:45 AM~Yoshi Froluchekettu  
expanded Comments (0)
collapsed Comments (0)
Copy and paste this wiki markup to link to this article from another article in this wiki.
Go ElsewhereStay ConnectedAbout
  • HCL Software
  • HCL Digital Solutions community
  • HCL Software support
  • BlogsDigital Solutions blog
  • Community LinkHCL Software forums and blogs
  • About HCL
  • Privacy
  • Accessibility